package com.lance.answer.util;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import com.lance.answer.dto.CourseInfo;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;

public class Constant{
    public static int TIMEOUT = 0 ;
    public static String USER_AGENT = "User-Agent";
    public static String REFERER = "Referer";
    public static String MAC_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0";


    public static LinkedBlockingDeque<String> USER_QUEUE = new LinkedBlockingDeque<>(5000);
    public static AtomicInteger COUNT = new AtomicInteger(0);
    public static Integer SUM = 0;

    public static LinkedBlockingDeque<CourseInfo> USER_COURSE_QUEUE = new LinkedBlockingDeque<>(5000);



    public static LinkedBlockingDeque<CourseInfo> COURSE_QUEUE = new LinkedBlockingDeque<>(200);
    public static Map<Integer,AtomicInteger>  COUNT_MAP = new ConcurrentHashMap<>();
    public static Map<Integer,Integer> SUM_MAP = new ConcurrentHashMap<>();



    /**
     * 系统运行时的核数
     */
    public static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();

    /**
     * 跑批线程池
     */
    public static final ExecutorService THREAD_POOL_BATCH =
            new ThreadPoolExecutor(NUMBER_OF_CORES * 2, NUMBER_OF_CORES * 2, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(5000));

    public static void initLog() {
        System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "ERROR");
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        List<Logger> loggerList = loggerContext.getLoggerList();
        loggerList.forEach(logger -> {
            logger.setLevel(Level.INFO);
        });
    }

    public static Map<String,String> SUBJECT = new HashMap<>();

    static {
        // get
        SUBJECT.put("02326","管理学基础");
        SUBJECT.put("02548","企业集团财务管理");
        // get
        SUBJECT.put("00975","经济数学基础12");
        // get
        SUBJECT.put("00747","基础会计");
        // get
        SUBJECT.put("03427","人体解剖生理学");
        // get
        SUBJECT.put("02473","医学免疫学与微生物学");
        // get
        SUBJECT.put("03129","社会心理适应");
        // 国开后台找不到 TODO FIXME 新账号有
        SUBJECT.put("01255","人文社会科学基础");
        // get
        SUBJECT.put("04458","管理心理学");
        // 国开后台找不到
        SUBJECT.put("51297","心理学概论");
        // get
        SUBJECT.put("00512","公共行政学");
        // 都是话题讨论 、上传文件
        SUBJECT.put("02031","政治学原理");
        // get
        SUBJECT.put("01628","宪法学");
        // FIXME FIXME
        SUBJECT.put("04678","毛泽东思想和中国特色社会主义理论体系概论");
        // get
        SUBJECT.put("02480","人体解剖生理学");
        // get
        SUBJECT.put("03039","病理学与病理生理学");
        // FIXME
        SUBJECT.put("04017","管理英语1");
        // FIXME
        SUBJECT.put("04013","人文英语1");
        // 没有形考任务
        SUBJECT.put("02306","统计学原理");
        // FIXME
        SUBJECT.put("04005","理工英语1");
        // FIXME
        SUBJECT.put("04009","商务英语1");
        SUBJECT.put("04011","商务英语3");
        // get
        SUBJECT.put("02316","★中级财务会计（一）");
        // 上传文件
        SUBJECT.put("00721","机械制图");
        //  get
        SUBJECT.put("00289","电工电子技术");
        //  get
        SUBJECT.put("01507","网络实用技术基础");
        //  get
        SUBJECT.put("04335","人体解剖学与组织胚胎学");

        // get
        SUBJECT.put("04330","人体生理学");
        //  get
        SUBJECT.put("01769","医护心理学");
        //  get
        //  get
        SUBJECT.put("04334","医学生物化学");
        //  get
        SUBJECT.put("04332","护理学基础");

        SUBJECT.put("00855","建筑材料(A)");
        // 线下
        SUBJECT.put("00892","建筑制图基础");
        SUBJECT.put("01410","水力学(B)");

        SUBJECT.put("00883","建筑力学");

        // 上传文件
        SUBJECT.put("00721","机械制图");
        // 线下
        SUBJECT.put("00364","法理学");
        // 上传文件
        SUBJECT.put("02123","微机系统与维护");



        SUBJECT.put("00048","办公室管理"); //
        SUBJECT.put("00471","个人与团队管理"); //
        // 都是上传文件
        SUBJECT.put("00834","监督学");
        SUBJECT.put("01304","社会调查研究与方法"); //
        SUBJECT.put("01733","行政组织学"); //
        SUBJECT.put("01236","人力资源管理"); //



        SUBJECT.put("00853","建筑测量"); //
        SUBJECT.put("00858","建筑构造"); //
        SUBJECT.put("04348","建设法规"); //
        SUBJECT.put("00880","建筑施工技术"); //


        // 经济法律基础线下作业
        SUBJECT.put("02310","经济法律基础");//
        SUBJECT.put("02325","市场营销学"); //
       // 已经包含了 SUBJECT.put("00471","个人与团队管理");
        SUBJECT.put("00504","公共关系学"); //


        SUBJECT.put("00961","经济法学"); //
        SUBJECT.put("01712","行政法与行政诉讼法"); //
        SUBJECT.put("01109","民事诉讼法学"); //
        SUBJECT.put("01707","刑事诉讼法学"); //
        SUBJECT.put("01708","刑法学(1)"); //
        SUBJECT.put("01097","民法学(1)"); //



        SUBJECT.put("00191","成本会计"); //
      // 已有  SUBJECT.put("02310","经济法律基础");
        SUBJECT.put("00340","电算化会计");
        SUBJECT.put("00533","管理会计");
        SUBJECT.put("01683","信息化管理与运作");
        SUBJECT.put("01692","管理信息系统");

        SUBJECT.put("02064","阅读与写作(2)");
        SUBJECT.put("02057","阅读与写作(1)");
      //  SUBJECT.put("01255","人文社会科学基础");
        SUBJECT.put("01887","自然科学基础");
        SUBJECT.put("01597","现代教师学导论");

        // SUBJECT.put("02473","医学免疫学与微生物学");
        SUBJECT.put("04329","药理学");
        //  SUBJECT.put("03039","病理学与病理生理学");
        SUBJECT.put("04331","健康评估");
        SUBJECT.put("02367","妇产科学与儿科护理学");


        SUBJECT.put("02476","药理学（药）");
        SUBJECT.put("02490","药事管理与法规");
        SUBJECT.put("02524","调剂学");
        SUBJECT.put("04403","Dreamweaver网页设计");


        // 纸质作业
        SUBJECT.put("00716","机械设计基础");
        SUBJECT.put("00725","机械制造基础");
        SUBJECT.put("01000","可编程控制器应用");
        // 线下作业
        SUBJECT.put("03323","液压与气压传动");
        SUBJECT.put("03324","机电一体化系统");

        // TODO 题库里也没有答案
        SUBJECT.put("02643","幼儿园课程与活动设计");
        // 基础写作的形考任务在每个章节里面，都是创建话题或者上传文档。
        SUBJECT.put("00748","基础写作");
        // 自测在每个单元章节里面
        SUBJECT.put("00530","古代汉语(1)");

        //中国古代文学(B)(1）都是提交文档
        SUBJECT.put("02006","中国古代文学(B)(1)");
        //中国古代文学(B)(2)形考任务3是话题讨论
        SUBJECT.put("01998","中国古代文学(B)(2)");

        // 企业信息管理提交文档考核
        SUBJECT.put("01189","企业信息管理");
        // 绩效与薪酬实务形考任务2是创建话题
        SUBJECT.put("02785","绩效与薪酬实务");
        //  工作分析实务线下考核
        SUBJECT.put("02786","工作分析实务");
        // 人员招聘与培训实务
        SUBJECT.put("02787","人员招聘与培训实务");


        SUBJECT.put("00945","金融企业会计");
        SUBJECT.put("00949","金融法规");
        SUBJECT.put("01601","现代货币金融学说");

        SUBJECT.put("00493","工程造价基础");
        SUBJECT.put("00863","建筑工程估价");

        // 水资源管理没有学生，看不到题目
        SUBJECT.put("01442","水资源管理");
        SUBJECT.put("02312","财务管理");
        SUBJECT.put("02788","劳动关系与社会保障实务");
        SUBJECT.put("04343","外科护理学");
        SUBJECT.put("04349","建筑工程质量检验");
        SUBJECT.put("04350","建筑工程计量与计价");

        SUBJECT.put("00924","教育学");
        SUBJECT.put("01803","应用写作（汉语）");

        //组织行为学都是案例分析题
        SUBJECT.put("01883","组织行为学");




        SUBJECT.put("04014","人文英语2");
        SUBJECT.put("04018","管理英语2");
        SUBJECT.put("04006","理工英语2");
        SUBJECT.put("04010","商务英语2");


        SUBJECT.put("01690","信息技术与教育技术(1)");
        SUBJECT.put("02054","证券投资分析");
        SUBJECT.put("03332","微积分基础");
        //00335	电子商务概论 有门课的题型比较特殊！
        SUBJECT.put("00335","电子商务概论");

        SUBJECT.put("02028","知识产权法");
        SUBJECT.put("02015","中国当代文学");
        SUBJECT.put("02558","中国当代文学专题");
        // 02969	中国特色社会主义理论体系概论
        SUBJECT.put("02969","中国特色社会主义理论体系概论"); //video

        SUBJECT.put("01977","中国现代文学");
        SUBJECT.put("02515","中国现代文学专题");
        SUBJECT.put("02047","政府经济学");
        SUBJECT.put("04392","形势与政策");
        SUBJECT.put("04041","药理学（本）");
        SUBJECT.put("04050","药事管理与法规（本）");
        SUBJECT.put("04052","药学信息检索");
        SUBJECT.put("01774","液压气动技术");
        SUBJECT.put("02557","现代汉语专题");
        SUBJECT.put("01640","小企业管理");
        SUBJECT.put("02307","西方经济学（本）");
        SUBJECT.put("01587","西方经济学");
        SUBJECT.put("04921","习近平总书记教育重要论述研究");

        SUBJECT.put("02314","现代管理原理");
        SUBJECT.put("01401","数学思想与方法");
        SUBJECT.put("02366","外科护理学（本）");
        // 04016	人文英语4 FIXME FIXME TODO
        SUBJECT.put("04016","人文英语4");
        SUBJECT.put("04015","人文英语3");
        // FIXME 切换下目录
        SUBJECT.put("02787","人员招聘与培训实务");
        SUBJECT.put("01250","软件工程");
        // 04016	商务英语3 FIXME FIXME TODO
        SUBJECT.put("04011","商务英语3");
        // 04012	商务英语4 FIXME FIXME TODO
        SUBJECT.put("04012","商务英语4");
        SUBJECT.put("02421","社区护理学（本）");
        SUBJECT.put("02272","数据结构（本）");

        SUBJECT.put("02363", "护理伦理学");
        SUBJECT.put("04114", "会计学概论");
        SUBJECT.put("02181", "混凝土结构设计原理");
        SUBJECT.put("00599", "国际私法");
        SUBJECT.put("00490", "工程数学（本）");
        SUBJECT.put("00285", "邓小平理论和三个代表重要思想概论");
        SUBJECT.put("02364", "护理科研方法");
        SUBJECT.put("00713", "机电控制工程基础");
        SUBJECT.put("03594", "房屋建筑混凝土结构设计");
        SUBJECT.put("00529", "公司财务");
        SUBJECT.put("03592", "电气传动与调速系统");
        SUBJECT.put("00585", "国际经济法");
        SUBJECT.put("00447", "高级财务会计");
        SUBJECT.put("00523", "公司概论");
        SUBJECT.put("02322", "国民经济核算");
        SUBJECT.put("00510", "公共政策概论");
        SUBJECT.put("00270", "当代中国政治制度");
        SUBJECT.put("00371", "法律文书");
        SUBJECT.put("02519", "古代小说戏曲专题");
        SUBJECT.put("00428", "高层建筑施工");
        SUBJECT.put("02646", "儿童发展问题的咨询与辅导");
        SUBJECT.put("00576", "国际公法");
        SUBJECT.put("00506", "公共部门人力资源管理");
        // 00050	保险学概论
        SUBJECT.put("00050", "保险学概论");
        // 00053	比较初等教育  有填空题：933年，美国哥伦比亚大学教授康德尔出版了比较教育领域中具有里程碑意
        SUBJECT.put("00053", "比较初等教育");
        // 02362	病理生理学
        SUBJECT.put("02362", "病理生理学");
        // 02152	操作系统
        SUBJECT.put("02152", "操作系统");
        // 00192	成本管理
        SUBJECT.put("00192", "成本管理");

        //        SUBJECT.put("02652", "0-3岁婴幼儿的保育与教育");
        SUBJECT.put("00038", "安装工程估价");
        SUBJECT.put("00236", "传感器与测试技术");
        SUBJECT.put("00439", "钢结构（本）");
         SUBJECT.put("04007", "理工英语3");
         SUBJECT.put("01245", "人文社会科学基础(A)");
            SUBJECT.put("01588", "西方行政学说");
            SUBJECT.put("02151", "计算机组成原理");
           SUBJECT.put("00857", "建筑工程项目管理");






















        // 04389
        SUBJECT.put("04680","思想道德修养与法律基础"); //video
        SUBJECT.put("04391","习近平新时代中国特色社会主义思想"); //video
        SUBJECT.put("04384","马克思主义基本原理概论"); //video
        SUBJECT.put("00815","计算机应用基础");
        SUBJECT.put("00808","计算机应用基础(本)");
        SUBJECT.put("01611","现代教育原理");
        SUBJECT.put("01233","人类与社会");
        SUBJECT.put("01007","科学与技术");
        SUBJECT.put("02642","学前儿童卫生与保健");
        SUBJECT.put("02644","幼儿游戏与玩具");
        SUBJECT.put("02641","学前教育原理");



        SUBJECT.put("04681","中国近现代史纲要"); //video
        SUBJECT.put("02970","国家开放大学学习指南");

        // 思想道德与法治  ★基础会计,size:43  药物化学  中医药学概论 工程经济
        // 学前儿童健康教育 现代汉语(1)

        SUBJECT.put("01747","学前儿童语言教育");
        SUBJECT.put("02311","金融学");
        SUBJECT.put("02365","内科护理学（本）");
        SUBJECT.put("02366","外科护理学（本）");
        SUBJECT.put("01690","信息技术与教育技术(1)");
        SUBJECT.put("01548","文献检索");
        SUBJECT.put("00873","建筑结构");
        SUBJECT.put("02083","幼儿园课程论");
        SUBJECT.put("02972","劳动与社会保障法");
        SUBJECT.put("04019","管理英语3");
        SUBJECT.put("04020","管理英语4");
        SUBJECT.put("01408","水工建筑物");
        SUBJECT.put("01430","水利工程施工");
        SUBJECT.put("00847","建设项目管理");
        SUBJECT.put("01546","文学概论");

        SUBJECT.put("01548", "文献检索");
        SUBJECT.put("01714", "行政领导学");



        SUBJECT.put("00920", "教育心理专题");
        SUBJECT.put("00903", "健康教育与健康促进");
        SUBJECT.put("04042", "分析化学（本）");
        SUBJECT.put("04037", "人体解剖生理学（本）");
        SUBJECT.put("01006", "可编程控制器应用实训");
        SUBJECT.put("04341", "内科护理学");
        SUBJECT.put("00009", "Flash动画制作");
        SUBJECT.put("03424", "网站界面（UI）设计");
        SUBJECT.put("01378", "数据库基础与应用");
        SUBJECT.put("04406", "Web开发基础");
        SUBJECT.put("03164", "JavaScript程序设计");
        SUBJECT.put("02540", "管理案例分析");
        SUBJECT.put("01031", "流通概论");
        SUBJECT.put("01182", "企业战略管理");
        SUBJECT.put("00163", "财务报表分析");
        SUBJECT.put("02315", "审计学");
        SUBJECT.put("02313", "纳税筹划"); // 单元测试也是形考分数。。。。。
        SUBJECT.put("00691", "会计制度设计");
        SUBJECT.put("04008", "理工英语4");
        SUBJECT.put("00849", "建设监理");
        SUBJECT.put("00874", "建筑结构试验");
        SUBJECT.put("00206", "城市管理学");
        SUBJECT.put("02645", "儿童家庭教育指导");
        SUBJECT.put("02727", "学前教育科研方法");
        SUBJECT.put("02652", "0-3岁婴幼儿的保育与教育");
        SUBJECT.put("04049", "临床医学概论（本）");
        SUBJECT.put("04048", "调剂学（本）");
        SUBJECT.put("04053", "临床药理学");
        SUBJECT.put("04051", "药剂学（本）");
        SUBJECT.put("04047", "药物治疗学（本）");
        SUBJECT.put("05013", "习近平法治思想概论");
        SUBJECT.put("02025", "中国法制史");
        SUBJECT.put("04957", "经济学（本）");
        SUBJECT.put("03595", "C语言程序设计");
        SUBJECT.put("50501", "离散数学（本）");
        SUBJECT.put("00472", "工程地质");
        SUBJECT.put("01227", "桥梁工程（本）");
        SUBJECT.put("01467", "土木工程力学（本）");
        SUBJECT.put("02640", "儿童心理学");
        SUBJECT.put("01711", "刑法学(2)");
        SUBJECT.put("01110", "民法学(2)");
        SUBJECT.put("00865", "建筑工程项目招投标与合同管理");
        SUBJECT.put("01906", "资源与运营管理");
        SUBJECT.put("02323", "生产与运作管理");
        SUBJECT.put("02317", "中级财务会计（二）"); // ☆中级财务会计（二）
        SUBJECT.put("00453", "高等数学基础");
        SUBJECT.put("00023", "Photoshop图像处理");
        SUBJECT.put("03598", "MySQL数据库应用");
        SUBJECT.put("00020", "ERP原理与应用");
        SUBJECT.put("01280", "商业银行经营管理");
        SUBJECT.put("04259", "个人理财");
        SUBJECT.put("04248", "金融风险概论");
        SUBJECT.put("04244", "互联网金融概论");
        SUBJECT.put("01738", "学前教育学");
        SUBJECT.put("01731", "学前儿童发展心理学");
        SUBJECT.put("01617", "现代教育思想");
        SUBJECT.put("03599", "课堂提问与引导");
        SUBJECT.put("01647", "小学儿童教育心理学");
        SUBJECT.put("02536", "药物治疗学");
        SUBJECT.put("02565", "中医药学概论");
        SUBJECT.put("02489", "药剂学");
        SUBJECT.put("02532", "医药商品营销实务");
        SUBJECT.put("00476", "工程经济");
        SUBJECT.put("04956", "经济学基础");
        SUBJECT.put("04691", "Python程序设计");
        SUBJECT.put("02305", "政治经济学");
        SUBJECT.put("01426", "水利工程测量");
        SUBJECT.put("04942", "思想道德与法治");
        SUBJECT.put("01483", "外国文学");
        SUBJECT.put("01599", "现代汉语(1)");
        SUBJECT.put("04245", "金融基础");
        SUBJECT.put("00942", "金融市场");
        SUBJECT.put("04326", "金融营销基础");
        SUBJECT.put("01740", "学前儿童艺术教育(美术)");
        SUBJECT.put("01744", "学前儿童艺术教育(音乐)");
        SUBJECT.put("01734", "学前儿童健康教育");
        SUBJECT.put("01736", "学前儿童科学教育");
        SUBJECT.put("01737", "学前儿童社会教育");
        SUBJECT.put("00650", "合同法");
        SUBJECT.put("01267", "商法");
        SUBJECT.put("04992", "经济法");
        SUBJECT.put("00711", "机械CAD/CAM");
     //   SUBJECT.put("04975", "机电控制与可编程序控制器技术"); // FIXME
        SUBJECT.put("00704", "机电控制与可编程序控制器技术"); // FIXME
        SUBJECT.put("00784", "计算机绘图（本）");
        SUBJECT.put("02328", "金融风险管理");
        SUBJECT.put("01944", "中央银行理论与实务");
        SUBJECT.put("02327", "投资学");
        SUBJECT.put("02520", "外国文学专题");
        SUBJECT.put("02560", "古代诗歌散文专题");
        SUBJECT.put("02578", "心理学");
        SUBJECT.put("02150", "计算机网络（本）");
        SUBJECT.put("02154", "数据库应用技术");
        SUBJECT.put("01659", "小学语文教学研究");
        SUBJECT.put("01011", "课程与教学论");
        SUBJECT.put("01651", "小学数学教学研究");
        SUBJECT.put("01607", "现代汉语(2)");
        SUBJECT.put("00528", "古代汉语(2)");
        SUBJECT.put("00928", "教育研究方法");
        SUBJECT.put("02480", "药物化学");



    }
}